﻿using System.Collections.Generic;
using Newtonsoft.Json;

[JsonObject(MemberSerialization = MemberSerialization.OptIn)]
public class MemberManager:Dict<string,Member>
{
    /// <summary>
    /// 添加一个成员到我们的成员管理器中
    /// </summary>
    /// <param name="mem">欲被添加的成员</param>
    public void Add(Member mem)
    {
        Add(mem.Id, mem);
    }
    /// <summary>
    /// 从我们的成员管理器中移除一个成员
    /// </summary>
    /// <param name="memId">欲被移除的唯一成员Id</param>
    public override void Remove(string memId)
    {
        if (IsExist(memId))
        {
            GetValue(memId).DestroySelf();  // 销毁所处的游戏对象
            Singleton<RoomManager>.GetInstance().RemoveMember(memId);   // 从房间中移除            
            Dictionary.Remove(memId);   // 从当前成员管理器中移除
            Singleton<ClientManager>.GetInstance().Remove(memId);   // 从客户管理器中移除

        }
    }
    /// <summary>
    /// 从我们的成员管理器中移除一个成员
    /// </summary>
    /// <param name="mem">欲被移除的成员实例</param>
    public void Remove(Member mem)
    {
        Remove(mem.Id);
    }
    /// <summary>
    /// 重写ToString方法,返回成员管理器的JSON对象
    /// </summary>
    /// <returns></returns>
    public override string ToString()
    {
        return JsonConvert.SerializeObject(this);
    }
    [JsonProperty]
    /// <summary>
    /// 获取我们成员管理器中的所有成员
    /// </summary>
    public Member[] Members
    {
        get
        {
            return new List<Member>(Dictionary.Values).ToArray();
        }
    }
}
